﻿using System;
using System.Data.OleDb;
using System.Data;

namespace DBConnect
{
    public class CommandDemonstrativo
    {
        /// <summary>
        /// Insere um novo registro na tabela DemonstrativoRetorno.
        /// </summary>
        /// <param name="tipoSolicCod"></param>
        /// <param name="sequencialTransacao"></param>
        /// <param name="codPrestador"></param>
        /// <param name="regANS"></param>
        /// <param name="loteID"></param>
        /// <param name="demonstrativo"></param>
        /// <returns></returns>
        public static bool InsereDemonstrativoRetorno(int tipoSolicCod, long sequencialTransacao,
            long codPrestador, string regANS, long loteID, byte[] demonstrativo)
        {
            string query = "INSERT INTO DemonstrativoRetorno " +
                "(tipoSolic_Cod, SequencialTransacao, codPrestador, regANS, loteID, demonstrativo) VALUES " +
                "(" + tipoSolicCod + "," + sequencialTransacao + "," + codPrestador + ",'" + regANS + "'," + loteID + ",@demonstrativo)";

            OleDbParameter param = new OleDbParameter("@demonstrativo", demonstrativo);
            param.DbType = DbType.Binary;

            try
            {
                
                Connect.executa(query, "", param);

                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        /// <summary>
        /// Seleciona objeto do demonstrativo que já foi solicitado.
        /// </summary>
        /// <param name="demonstrativoCod"></param>
        /// <returns></returns>
        public static DataTable SelecionaDemonstrativo(long demonstrativoCod)
        {
            string query = "SELECT demonstrativo " +
                "FROM DemonstrativoRetorno " +
                "WHERE (demonstrativoCod = " + demonstrativoCod + ")";
            try
            {
                

                return Connect.seleciona(query).Tables[0];
            }
            catch (Exception)
            {
                return null;
            }
        }

        #region Código antigo

        ///// <summary>
        ///// Insere um novo registro na tabela DemonstrativoRetorno.
        ///// Retorna o demonstrativoCod resultante da inserção.
        ///// </summary>
        ///// <param name="tipoSolicCod"></param>
        ///// <param name="sequencialTransacao"></param>
        ///// <param name="codPrestador"></param>
        ///// <param name="regANS"></param>
        ///// <returns></returns>
        //public static long? InsereDemonstrativoRetorno(int tipoSolicCod, long sequencialTransacao, long codPrestador, string regANS)
        //{
        //    string query = "INSERT INTO DemonstrativoRetorno " +
        //        "(tipoSolic_Cod, SequencialTransacao, codPrestador, regANS) VALUES " +
        //        "(" + tipoSolicCod + "," + sequencialTransacao + "," + codPrestador + ",'" + regANS + "')";

        //    string queryout = "SELECT TOP 1 demonstrativoCod " +
        //        "FROM DemonstrativoRetorno " +
        //        "ORDER BY demonstrativoCod DESC";

        //    
        //    return Convert.ToInt64(Connect.executa(query, queryout));

        //}

        //public static bool InsereDemonstrativoPagamento(long demonstrativoCod, long loteCod, byte[] demonstrativoPagamento)
        //{
        //    string query = "INSERT INTO DemonstPagamento " +
        //        "(demonstrativoCod, loteCod, demonstrativoPagamento) VALUES " +
        //        "(" + demonstrativoCod + "," + loteCod + ",@demonstrativoPagamento)";

        //    OleDbParameter param = new OleDbParameter("@demonstrativoPagamento", demonstrativoPagamento);
        //    param.DbType = DbType.Binary;

        //    try
        //    {
        //        
        //        Connect.executa(query, "",param);
        //        return true;
        //    }
        //    catch (Exception)
        //    {
        //        return false;
        //    }
        //}

        //public static bool InsereDemonstrativoAnaliseConta(long demonstrativoCod, string numeroGuia, string loteCod, byte[] demonstrativoAnaliseConta)
        //{
        //    string query = "INSERT INTO DemonstAnaliseConta " +
        //        "(demonstrativoCod, numeroGuia, loteCod, demonstrativoAnaliseConta) VALUES " +
        //        "(" + demonstrativoCod + ",'" + numeroGuia + "'," + loteCod + ",@demonstrativoAnaliseConta)";

        //    OleDbParameter param = new OleDbParameter("@demonstrativoAnaliseConta", demonstrativoAnaliseConta);
        //    param.DbType = DbType.Binary;

        //    try
        //    {
        //        
        //        Connect.executa(query, "", param);
        //        return true;
        //    }
        //    catch (Exception)
        //    {
        //        return false;
        //    }
        //}

        //public static DataTable SelecionaDemonstrativoPagamento(long loteID, int tipoSolicCod)
        //{
        //    string query = "SELECT TOP 1 demonstrativo " +
        //        "FROM DemonstrativoRetorno " +
        //        "WHERE (loteID = " + loteID + " AND (tipoSolic_Cod = " + tipoSolicCod + ")) " +
        //        "ORDER BY demonstrativoCod DESC";
        //    try
        //    {
        //        

        //        return Connect.seleciona(query).Tables[0];
        //    }
        //    catch (Exception)
        //    {
        //        return null;
        //    }
        //}

        #endregion
    }
}
